/* 
 * File:   ShapeList.h
 * Author: brady
 *
 * Created on June 27, 2011, 7:39 PM
 */

#ifndef SHAPELIST_H
#define	SHAPELIST_H

#include <iostream>
#include <acceleration/IntersectionStructure.h>
#include <vector>

using namespace std;

class ShapeList : public IntersectionStructure{
public:
    ShapeList();
    ShapeList(const ShapeList& orig);
    virtual ~ShapeList();
    void addShape(Shape* shape);
    void finalize();
    IntersectionResult getFirstIntersection(IntersectionParams& ip);
    vector<IntersectionResult> getAllIntersections(IntersectionParams& ip);
    IntersectionResult getAnyIntersection(IntersectionParams& ip);
    BoundingBox getBoundingBox(){return boundingBox;}
    
private:
    vector<Shape*> shapes;
    BoundingBox boundingBox;
};

#endif	/* SHAPELIST_H */

